package superviseur.database;

import java.io.*;
import java.util.*;
import javax.servlet.*;

/**
 * <p>Titre : </p>
 * <p>Description : Assure la persistance des donnees relatives aux parametres du parking.
 * Sont enregistres dans l'ordre: Nombre de vehicules max , nombre de vehicules (presents)
 * Les donnees sont stockees dans un fichier: fichierEvenements.</p>
 * <p>Copyright : Copyright (c) 2003</p>
 * <p>Société : </p>
 * @author Gilles Petot
 * @version 1.0
 */

public class TParams
{
    private static HashMap params;
    String fichierParams;

    public TParams(String fichierParams)
    {
	this.fichierParams = fichierParams;
	// Récupération de la table de hachage stockée dans le fichier
	try
	{
	    readParams();
	}
	catch (Exception e)
	{
	    //throw new UnavailableException("Erreur de lecture " + e);
	    // Pour tester le servlet, on peut utiliser le code commenté
	    // ci-dessous au lieu de lever l'exception ci-dessus
	    params = new HashMap();
	    params.put("NbreVehiculesMax", new Integer(20));
	    params.put("NbreVehicules", new Integer(10));
	    try
	    {
		writeParams();
	    }
	    catch (Exception e2)
	    {
		System.err.println("Problème de sauvegarde " + e2);
	    }
	    System.out.println("reinit parametres");
	}
    }

    public void destroy()
    {
	params = null;
    }

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    public int getNombreVehiculesMax()
    {
	return ((Integer)params.get("NbreVehiculesMax")).intValue();
    }

    public void setNombreVehiculesMax(int n)
    {
	params.put("NbreVehiculesMax", new Integer(n));
	writeParams();
    }

    public int getNombreVehicules()
    {
	return ((Integer)params.get("NbreVehicules")).intValue();
    }

    public void setNombreVehicules(int n)
    {
	params.put("NbreVehicules", new Integer(n));
	writeParams();
    }

    public void evVehicule(boolean entre)
    {
	params.put("NbreVehicules", new Integer(((Integer)params.get("NbreVehicules")).intValue() + (entre? 1:-1)));
	writeParams();
    }

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    protected synchronized void writeParams()
    {
	try
	{
	    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fichierParams));
	    out.writeObject(params);
	    out.close();
	}
	catch (IOException e2)
	{
	    System.err.println("Problème de sauvegarde " + e2);
	}
    }

    protected synchronized void readParams() throws Exception
    {
	try
	{
	    FileInputStream inf = new FileInputStream(fichierParams);
	    ObjectInputStream in = new ObjectInputStream(inf);
	    params = (HashMap)in.readObject();
	    in.close();
	}
	catch (Exception e )
	{
	    throw new Exception("Erreur lecture params");
	}
    }



}